const fs = require('fs')
const path = require('path')
const Mock = require('mockjs')  // mockjs 导入依赖模块
const JSON5 = require('json5')

// 接收post请求参数
const bodyParser = require('body-parser')


// 读取json文件
function getJsonFile(filePath) {
    // 读取指定json文件
    var json = fs.readFileSync(path.resolve(__dirname, filePath), 'utf-8');
    // 解析并返回 
    return JSON5.parse(json);
}
// 返回一个函数
module.exports = function(app) {
    // .env中的变量，true就是后端接口没有实现，使用mock拦截模拟
    if(process.env.MOCK === 'true') {

        // 配置body-parser模块
        app.use(bodyParser.urlencoded({extended: false}))
        app.use(bodyParser.json())

        // 监听http请求
        app.get('/user/userinfo', function(rep, res) {
            // 每次响应请求时读取mock data的json文件
            // getJsonFile方法定义了如何读取json文件并解析成数据对象
            var json = getJsonFile('./userInfo.json5');
            // 将json传入 Mock.mock 方法中，生成的数据返回给浏览器
            res.json(Mock.mock(json));
        }),

        app.get('/todo/task', (rep, res) => {
            let arr = []
            for(let i=0;i<5;i++){
                let obj = Mock.mock({
                    id: '@id()',
                    title: '@string("lower", 5)',
                    completed: '@boolean'
                })
                arr.push(obj)
            }
            res.json(arr)
        })

        app.post('/todo/addTask', (req, res) => {
            console.log('params', req.params);  // /task/:id
            console.log('query', req.query);    // /task?id=123
            console.log('body', req.body);      // post中的参数
            return res.send('ok')
        })
    }
}
    
